package com.eclipse.e20200205_集合.ArrayList;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

class Cat {
	String name;
	Cat(String name){
		this.name = name;
	}

	void show() {
		System.out.println(this.name);
	}
}

public class 迭代器 {
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static void main(String[] args) {

		Collection c = new ArrayList();
		c.add("a");
		c.add("b");
		c.add("c");

		// 1.转成数组，通过数组进行遍历 (获取数组当中的每一个元素)
		Object arrs = c.toArray();

		// 2.迭代器遍历
		Iterator it = c.iterator(); // 放到Iterator内容会自动类型提升，Object

		/**
		// 获取迭代器当中 的内容
		Object obj = it.next(); // 把当前游标的内容获取出来，当前游标往后走一位
		System.out.println(obj);
		
		Object obj2 = it.next();
		System.out.println(obj2);

		Object obj3 = it.next();
		System.out.println(obj3);

		// 判断迭代器当中是否还有元素(是否有下一个游标) 如果有返回true 没有 返回false 
		boolean res = it.hasNext();
		System.out.println(res);
		*/
		System.out.println("-----------");
		//1.判断有没有元素
		while(it.hasNext()) {
			//2.如果，取出元素
			System.out.println(it.next());
		}
		
		//在每一个实现类当中都定义自己的迭代方法 
		Collection c2 = new ArrayList();
		c2.add(new Cat("mimi"));
		c2.add(new Cat("mm"));
		
		Iterator it2 = c2.iterator(); //里面的对象都会自动提升为 Object
		System.out.println(it2);
		while(it2.hasNext()) {
		  Cat cat =	(Cat)it2.next();
		  cat.show();
		}
	}
}
